#pragma once
#include <iostream>
#include <string>
#include "Util.hpp"

//本文件实现日志功能
namespace ns_log
{   
    using namespace ns_util;
    enum{
        INFO,
        DEBUG,
        WARNING,
        ERROR,
        FATAL
    };
    //LOG() << "message:";
    inline std::ostream& Log(std::string level,std::string file,int line)
    {
        //日志信息输出到cout 的缓冲区
        std::string message;

        //添加日志等级
        message +="[";
        message += level;
        message +="]";
        //添加日期
        message += "[";
        message += TimeUtil::GetTimeStamp();
        message += "]";

        //添加文件名
        message += "[";
        message += file;
        message += "]";
        //添加行号
        message += "-";
        message += std::to_string(line);
        message += ": ";

        //注意，这一行是把msg刷新到了cout 的缓冲区，但是没有endl，打印不会立刻执行。
        std::cout << message;
        return std::cout;
    }

    //再封装一层宏调用
    #define LOG(level) Log(#level,__FILE__,__LINE__)

}